package kgame5.k3d.core.obj3d.bound {
	import kgame5.k3d.core.math.Vector3D;
import kgame5.k3d.core.math.Vertex3D;

/**
 * @author kk
 */
public class AABB {
	public var 
		A:int=0,//x方向
		B:int=0,//z方向
		H:int=0;//y方向
	
	//*****************************************
	public function fill(A:Number,B:Number,H:Number):void{
		this.A=A;
		this.B=B;
		this.H=H;
	}
	public function copy(src:AABB):void{
		A=src.A;
		B=src.B;
		H=src.H;
	}
	public function calcR():Number{
		var a2:int=A/2;
		var b2:int=B/2;
		var h2:int=H/2;
		return Math.sqrt(a2*a2+b2*b2+h2*h2);
	}
	

	
//	//--计算边界盒子
//	public static function CreateFromVertices(aVB_p:Vector.<Vector3D>):AABB{
//		var 
//			minA:Number=0,maxA:Number=0,
//			minB:Number=0,maxB:Number=0,
//			minH:Number=0,maxH:Number=0;
//			
//			var len:int=aVB_p.length;
//			for(var i:int=0;i<len;i++){
//				
//				var vv:Vector3D=aVB_p[i];
//				
//				
//				
//				minA=Math.min(minA,vv.x);
//				minB=Math.min(minB,vv.z);
//				minH=Math.min(minH,vv.y);
//				
//				maxA=Math.max(maxA,vv.x);
//				maxB=Math.max(maxB,vv.z);
//				maxH=Math.max(maxH,vv.y);
//			}
//		
//		var aabb:AABB=new AABB();	
//		aabb.A=maxA-minA;
//		aabb.B=maxB-minB;
//		aabb.H=maxH-minH;
//		return aabb;
//	}
	
	//--计算边界盒子
	public static function CreateFromVertices(aVertex:Vector.<Vertex3D>):AABB{
		var 
			minA:Number=0,maxA:Number=0,
			minB:Number=0,maxB:Number=0,
			minH:Number=0,maxH:Number=0;
			
			for each(var vv:Vertex3D in aVertex){
				minA=Math.min(minA,vv.x);
				minB=Math.min(minB,vv.z);
				minH=Math.min(minH,vv.y);
				
				maxA=Math.max(maxA,vv.x);
				maxB=Math.max(maxB,vv.z);
				maxH=Math.max(maxH,vv.y);
			}
		
		var aabb:AABB=new AABB();	
		aabb.A=maxA-minA;
		aabb.B=maxB-minB;
		aabb.H=maxH-minH;
		
		return aabb;
	}
	
	public function toString():String{
		return "AABB A:"+A+" B:"+B+" H:"+H;
	}
}
}
